#include <my_header.h>

/* Usage: ./23_pthread_cond_timedwait */
int main(void){                                  
    
    // 定义锁和变量 并初始化
    pthread_mutex_t lock;
    pthread_cond_t cond;
    pthread_mutex_init(&lock, NULL);
    pthread_cond_init(&cond, NULL);

    // 加锁
    pthread_mutex_lock(&lock);

    // 获取当前的时间并定义结构体
    time_t now = time(NULL);
    struct timespec end;
    end.tv_sec = now + 5;
    end.tv_nsec = 0;
    printf("wait... \n");
    // 设置超时时间梓栋返回
    int res = pthread_cond_timedwait(&cond, &lock, &end);
    THREAD_ERROR_CHECK(res, "pthread_cond_timedwait");

    // 解锁
    pthread_mutex_unlock(&lock);

    return 0;
}

#if 0
// pthread_cond_timedwait返回有两种可能的情况。如果在设置的等待时间内条件变量被其他线程唤醒并满足条件，函数会返回0。如果等待超时，函数会返回ETIMEDOUT。
#endif
